public class PreminumCaculator {
    /**
     * 某保险公司人寿保险的保费计算方式为：
     * 保费＝投保额×保险费率 其中，
     * 保险费率根据年龄、性别、婚姻状况和抚养人数的不同而有所不同，
     * 体现在不同年龄、性别、婚姻状况和抚养人数，点数设定不同，
     * 10点及10点以上保险费率为0.6%，10点以下保险费率为0.1%；
     * 而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定。
     */

    /**
     * 计算年龄点数
     * 20-39 、40-59 and other
     * @param age
     * @return
     */
    int age_point,gender_point,marriage_point;
    double numberOfDependents_point,sum_point,premium;
    int age(int age){
        if(age >= 20 && age <= 39){
            return age_point = 6;
        }else if(age >= 40 && age <= 59){
            return age_point = 4;
        }else if(age >=0 && age <20 || age >=60 ){
            return age_point = 2;
        }else{
            return age_point = -1;
        }
    }

    /**
     * 计算性别点数
     * 性别男gender=1，性别女gender=0
     * 性别不为0、1返回错误
     * @param gender
     * @return
     */
    int gender(String gender){
        if(gender.equals("M")){
            return gender_point = 4;
        }else if(gender.equals("F")){
            return gender_point = 3;
        }else{
            return gender_point = -1;
        }

    }

    /**
     * 计算婚姻状况点数
     * 已婚marriage=1
     * 未婚marriage=0
     * 婚姻状况部位0、1，返回错误
     * @param marrige
     * @return
     */
    int marriage(String marrige){
        if (marrige.equals("已婚")){
            return  marriage_point = 3;
        }else if(marrige.equals("未婚")){
            return marriage_point =5;
        }else{
            return marriage_point = -1;
        }

    }

    /**
     * 抚养人数0-5人，每人0.5点
     * 大于等于6人，按6人计算
     * 否则返回错误
     * @param number
     * @return
     */
    double numberOfDependents(int number){
        if(number >=6){
            return numberOfDependents_point = 3;
        }else if(number <6 && number >=0){
            return numberOfDependents_point = number*0.5;
        }else{
            return numberOfDependents_point = -1;
        }

    }

    /**
     * 计算总点数
     * 有任意一项值为-1，即有数据错误，点数和为-1
     * @param age_point
     * @param gender_point
     * @param marriage_point
     * @param numberOfDependents_point
     * @return
     */
    double sumPoint(int age_point,int gender_point,int marriage_point, double numberOfDependents_point){

        if(age_point == -1 || gender_point == -1 || marriage_point == -1 || numberOfDependents_point == -1){
            return sum_point = -1;
        }else{
            sum_point = age_point+gender_point+marriage_point-numberOfDependents_point;
            return sum_point;
        }

    }

    /**
     *计算保险费
     * 总点数最少5点
     * 最多15点
     * @param sum_point
     * @return
     */
    double premium(double sum_point){
        if(sum_point >=10 && sum_point <=15){
            return premium=0.006;
        }if(sum_point >=5 && sum_point <10){
            return premium=0.001;
        }else{
            System.out.println("计算保险费异常");
            return premium=-1;
        }

    }


}
